/**
 * 
 */
package br.com.skynix.tcmc.base.managedbeans;

import java.util.Collection;

import javax.faces.application.FacesMessage;
import javax.faces.application.FacesMessage.Severity;
import javax.faces.context.FacesContext;

import br.com.skynix.tcmc.model.enumeration.UnidadeFederativaEnum;
import br.com.skynix.tcmc.util.OperacaoEnum;
import br.com.skynix.tcmc.util.WebUtil;

/**
 * @author mgrb
 * 
 */
public class AbstractManagedBean {

	private OperacaoEnum operacao;

	public boolean isOperacaoIncluir() {
		return OperacaoEnum.INCLUIR.equals(operacao);
	}

	public boolean isOperacaoAlterar() {
		return OperacaoEnum.ALTERAR.equals(operacao);
	}

	public boolean isOperacaoPesquisar() {
		return OperacaoEnum.PESQUISAR.equals(operacao);
	}

	public boolean isOperacaoExcluir() {
		return OperacaoEnum.EXCLUIR.equals(operacao);
	}

	public boolean isOperacaoVisualizar() {
		return OperacaoEnum.VISUALIZAR.equals(operacao);
	}

	protected void adcionarMensagem(String mensagemKey, boolean forward) {
		adcionarMensagem(null, mensagemKey, null, forward);
	}

	protected void adcionarMensagem(Severity severity, String mensagemKey) {
		adcionarMensagem(severity, mensagemKey, null, false);
	}

	protected void adcionarMensagem(Severity severity, String mensagemKey,
			boolean forward) {
		adcionarMensagem(severity, mensagemKey, null, forward);
	}

	/**
	 * 
	 */
	public Collection<UnidadeFederativaEnum> getListaUF() {
		return UnidadeFederativaEnum.listAll();
	}

	protected void adcionarMensagem(Severity severidade, String mensagemKey,
			String detalhesKey, boolean forward) {
		Severity severidadeKey = severidade;
		if (severidade == null) {
			severidadeKey = FacesMessage.SEVERITY_INFO;
		}
		FacesContext context = FacesContext.getCurrentInstance();
		if (detalhesKey == null) {

			context.addMessage(
					null,
					new FacesMessage(severidadeKey, WebUtil
							.getMensage(mensagemKey), ""));
		}
		else {

			context.addMessage(
					null,
					new FacesMessage(severidade, WebUtil
							.getMensage(mensagemKey), WebUtil
							.getMensage(detalhesKey)));
		}

		if (forward) {
			context.getExternalContext().getFlash().setKeepMessages(true);
		}
	}

	protected String formatPath(String viewPath) {
		return "/views/##PATH##?faces-redirect=true".replace("##PATH##",
				viewPath);
	}

	/**
	 * @param operacao the operacao to set
	 */
	protected void setOperacao(OperacaoEnum operacao) {
		this.operacao = operacao;
	}

	/**
	 * @return the operacao
	 */
	protected OperacaoEnum getOperacao() {
		return operacao;
	}

}
